var q = null;
window.PR_SHOULD_USE_CONTINUATION = !0;
(function() {
	function L(a) {
		function m(a) {
			var f = a.charCodeAt(0);
			if (f !== 92)
				return f;
			var b = a.charAt(1);
			return (f = r[b]) ? f : "0" <= b && b <= "7" ? parseInt(a
							.substring(1), 8) : b === "u" || b === "x"
					? parseInt(a.substring(2), 16)
					: a.charCodeAt(1)
		}
		function e(a) {
			if (a < 32)
				return (a < 16 ? "\\x0" : "\\x") + a.toString(16);
			a = String.fromCharCode(a);
			if (a === "\\" || a === "-" || a === "[" || a === "]")
				a = "\\" + a;
			return a
		}
		function h(a) {
			for (var f = a
					.substring(1, a.length - 1)
					.match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g), a = [], b = [], o = f[0] === "^", c = o
					? 1
					: 0, i = f.length; c < i; ++c) {
				var j = f[c];
				if (/\\[bdsw]/i.test(j))
					a.push(j);
				else {
					var j = m(j), d;
					c + 2 < i && "-" === f[c + 1]
							? (d = m(f[c + 2]), c += 2)
							: d = j;
					b.push([j, d]);
					d < 65
							|| j > 122
							|| (d < 65
									|| j > 90
									|| b.push([Math.max(65, j) | 32,
											Math.min(d, 90) | 32]), d < 97
									|| j > 122
									|| b.push([Math.max(97, j) & -33,
											Math.min(d, 122) & -33]))
				}
			}
			b.sort(function(a, f) {
						return a[0] - f[0] || f[1] - a[1]
					});
			f = [];
			j = [NaN, NaN];
			for (c = 0; c < b.length; ++c)
				i = b[c], i[0] <= j[1] + 1 ? j[1] = Math.max(j[1], i[1]) : f
						.push(j = i);
			b = ["["];
			o && b.push("^");
			b.push.apply(b, a);
			for (c = 0; c < f.length; ++c)
				i = f[c], b.push(e(i[0])), i[1] > i[0]
						&& (i[1] + 1 > i[0] && b.push("-"), b.push(e(i[1])));
			b.push("]");
			return b.join("")
		}
		function y(a) {
			for (var f = a.source
					.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g), b = f.length, d = [], c = 0, i = 0; c < b; ++c) {
				var j = f[c];
				j === "(" ? ++i : "\\" === j.charAt(0) && (j = +j.substring(1))
						&& j <= i && (d[j] = -1)
			}
			for (c = 1; c < d.length; ++c)
				-1 === d[c] && (d[c] = ++t);
			for (i = c = 0; c < b; ++c)
				j = f[c], j === "("
						? (++i, d[i] === void 0 && (f[c] = "(?:"))
						: "\\" === j.charAt(0) && (j = +j.substring(1))
								&& j <= i && (f[c] = "\\" + d[i]);
			for (i = c = 0; c < b; ++c)
				"^" === f[c] && "^" !== f[c + 1] && (f[c] = "");
			if (a.ignoreCase && s)
				for (c = 0; c < b; ++c)
					j = f[c], a = j.charAt(0), j.length >= 2 && a === "["
							? f[c] = h(j)
							: a !== "\\"
									&& (f[c] = j.replace(/[A-Za-z]/g, function(
													a) {
												a = a.charCodeAt(0);
												return "["
														+ String.fromCharCode(a
																		& -33,
																a | 32) + "]"
											}));
			return f.join("")
		}
		for (var t = 0, s = !1, l = !1, p = 0, d = a.length; p < d; ++p) {
			var g = a[p];
			if (g.ignoreCase)
				l = !0;
			else if (/[a-z]/i.test(g.source.replace(
					/\\u[\da-f]{4}|\\x[\da-f]{2}|\\[^UXux]/gi, ""))) {
				s = !0;
				l = !1;
				break
			}
		}
		for (var r = {
			b : 8,
			t : 9,
			n : 10,
			v : 11,
			f : 12,
			r : 13
		}, n = [], p = 0, d = a.length; p < d; ++p) {
			g = a[p];
			if (g.global || g.multiline)
				throw Error("" + g);
			n.push("(?:" + y(g) + ")")
		}
		return RegExp(n.join("|"), l ? "gi" : "g")
	}
	function M(a) {
		function m(a) {
			switch (a.nodeType) {
				case 1 :
					if (e.test(a.className))
						break;
					for (var g = a.firstChild; g; g = g.nextSibling)
						m(g);
					g = a.nodeName;
					if ("BR" === g || "LI" === g)
						h[s] = "\n", t[s << 1] = y++, t[s++ << 1 | 1] = a;
					break;
				case 3 :
				case 4 :
					g = a.nodeValue, g.length
							&& (g = p ? g.replace(/\r\n?/g, "\n") : g.replace(
									/[\t\n\r ]+/g, " "), h[s] = g, t[s << 1] = y, y += g.length, t[s++ << 1
									| 1] = a)
			}
		}
		var e = /(?:^|\s)nocode(?:\s|$)/, h = [], y = 0, t = [], s = 0, l;
		a.currentStyle
				? l = a.currentStyle.whiteSpace
				: window.getComputedStyle
						&& (l = document.defaultView.getComputedStyle(a, q)
								.getPropertyValue("white-space"));
		var p = l && "pre" === l.substring(0, 3);
		m(a);
		return {
			a : h.join("").replace(/\n$/, ""),
			c : t
		}
	}
	function B(a, m, e, h) {
		m && (a = {
			a : m,
			d : a
		}, e(a), h.push.apply(h, a.e))
	}
	function x(a, m) {
		function e(a) {
			for (var l = a.d, p = [l, "pln"], d = 0, g = a.a.match(y) || [], r = {}, n = 0, z = g.length; n < z; ++n) {
				var f = g[n], b = r[f], o = void 0, c;
				if (typeof b === "string")
					c = !1;
				else {
					var i = h[f.charAt(0)];
					if (i)
						o = f.match(i[1]), b = i[0];
					else {
						for (c = 0; c < t; ++c)
							if (i = m[c], o = f.match(i[1])) {
								b = i[0];
								break
							}
						o || (b = "pln")
					}
					if ((c = b.length >= 5 && "lang-" === b.substring(0, 5))
							&& !(o && typeof o[1] === "string"))
						c = !1, b = "src";
					c || (r[f] = b)
				}
				i = d;
				d += f.length;
				if (c) {
					c = o[1];
					var j = f.indexOf(c), k = j + c.length;
					o[2] && (k = f.length - o[2].length, j = k - c.length);
					b = b.substring(5);
					B(l + i, f.substring(0, j), e, p);
					B(l + i + j, c, C(b, c), p);
					B(l + i + k, f.substring(k), e, p)
				} else
					p.push(l + i, b)
			}
			a.e = p
		}
		var h = {}, y;
		(function() {
			for (var e = a.concat(m), l = [], p = {}, d = 0, g = e.length; d < g; ++d) {
				var r = e[d], n = r[3];
				if (n)
					for (var k = n.length; --k >= 0;)
						h[n.charAt(k)] = r;
				r = r[1];
				n = "" + r;
				p.hasOwnProperty(n) || (l.push(r), p[n] = q)
			}
			l.push(/[\S\s]/);
			y = L(l)
		})();
		var t = m.length;
		return e
	}
	function u(a) {
		var m = [], e = [];
		a.tripleQuotedStrings
				? m
						.push([
								"str",
								/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,
								q, "'\""])
				: a.multiLineStrings
						? m
								.push([
										"str",
										/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/,
										q, "'\"`"])
						: m
								.push([
										"str",
										/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,
										q, "\"'"]);
		a.verbatimStrings && e.push(["str", /^@"(?:[^"]|"")*(?:"|$)/, q]);
		var h = a.hashComments;
		h
				&& (a.cStyleComments
						? (h > 1
								? m
										.push([
												"com",
												/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,
												q, "#"])
								: m
										.push([
												"com",
												/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,
												q, "#"]), e
								.push([
										"str",
										/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,
										q]))
						: m.push(["com", /^#[^\n\r]*/, q, "#"]));
		a.cStyleComments
				&& (e.push(["com", /^\/\/[^\n\r]*/, q]), e.push(["com",
						/^\/\*[\S\s]*?(?:\*\/|$)/, q]));
		a.regexLiterals
				&& e
						.push([
								"lang-regex",
								/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);
		(h = a.types) && e.push(["typ", h]);
		a = ("" + a.keywords).replace(/^ | $/g, "");
		a.length
				&& e
						.push([
								"kwd",
								RegExp("^(?:" + a.replace(/[\s,]+/g, "|")
										+ ")\\b"), q]);
		m.push(["pln", /^\s+/, q, " \r\n\t\xa0"]);
		e
				.push(
						["lit", /^@[$_a-z][\w$@]*/i, q],
						["typ", /^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/, q],
						["pln", /^[$_a-z][\w$@]*/i, q],
						[
								"lit",
								/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,
								q, "0123456789"], ["pln", /^\\[\S\s]?/, q], [
								"pun", /^.[^\s\w"-$'./@\\`]*/, q]);
		return x(m, e)
	}
	function D(a, m) {
		function e(a) {
			switch (a.nodeType) {
				case 1 :
					if (k.test(a.className))
						break;
					if ("BR" === a.nodeName)
						h(a), a.parentNode && a.parentNode.removeChild(a);
					else
						for (a = a.firstChild; a; a = a.nextSibling)
							e(a);
					break;
				case 3 :
				case 4 :
					if (p) {
						var b = a.nodeValue, d = b.match(t);
						if (d) {
							var c = b.substring(0, d.index);
							a.nodeValue = c;
							(b = b.substring(d.index + d[0].length))
									&& a.parentNode.insertBefore(s
													.createTextNode(b),
											a.nextSibling);
							h(a);
							c || a.parentNode.removeChild(a)
						}
					}
			}
		}
		function h(a) {
			function b(a, d) {
				var e = d ? a.cloneNode(!1) : a, f = a.parentNode;
				if (f) {
					var f = b(f, 1), g = a.nextSibling;
					f.appendChild(e);
					for (var h = g; h; h = g)
						g = h.nextSibling, f.appendChild(h)
				}
				return e
			}
			for (; !a.nextSibling;)
				if (a = a.parentNode, !a)
					return;
			for (var a = b(a.nextSibling, 0), e; (e = a.parentNode)
					&& e.nodeType === 1;)
				a = e;
			d.push(a)
		}
		var k = /(?:^|\s)nocode(?:\s|$)/, t = /\r\n?|\n/, s = a.ownerDocument, l;
		a.currentStyle
				? l = a.currentStyle.whiteSpace
				: window.getComputedStyle
						&& (l = s.defaultView.getComputedStyle(a, q)
								.getPropertyValue("white-space"));
		var p = l && "pre" === l.substring(0, 3);
		for (l = s.createElement("LI"); a.firstChild;)
			l.appendChild(a.firstChild);
		for (var d = [l], g = 0; g < d.length; ++g)
			e(d[g]);
		m === (m | 0) && d[0].setAttribute("value", m);
		var r = s.createElement("OL");
		r.className = "linenums";
		for (var n = Math.max(0, m - 1 | 0) || 0, g = 0, z = d.length; g < z; ++g)
			l = d[g], l.className = "L" + (g + n) % 10, l.firstChild
					|| l.appendChild(s.createTextNode("\xa0")), r
					.appendChild(l);
		a.appendChild(r)
	}
	function k(a, m) {
		for (var e = m.length; --e >= 0;) {
			var h = m[e];
			A.hasOwnProperty(h)
					? window.console
							&& console.warn(
									"cannot override language handler %s", h)
					: A[h] = a
		}
	}
	function C(a, m) {
		if (!a || !A.hasOwnProperty(a))
			a = /^\s*</.test(m) ? "default-markup" : "default-code";
		return A[a]
	}
	function E(a) {
		var m = a.g;
		try {
			var e = M(a.h), h = e.a;
			a.a = h;
			a.c = e.c;
			a.d = 0;
			C(m, h)(a);
			var k = /\bMSIE\b/.test(navigator.userAgent), m = /\n/g, t = a.a, s = t.length, e = 0, l = a.c, p = l.length, h = 0, d = a.e, g = d.length, a = 0;
			d[g] = s;
			var r, n;
			for (n = r = 0; n < g;)
				d[n] !== d[n + 2] ? (d[r++] = d[n++], d[r++] = d[n++]) : n += 2;
			g = r;
			for (n = r = 0; n < g;) {
				for (var z = d[n], f = d[n + 1], b = n + 2; b + 2 <= g
						&& d[b + 1] === f;)
					b += 2;
				d[r++] = z;
				d[r++] = f;
				n = b
			}
			for (d.length = r; h < p;) {
				var o = l[h + 2] || s, c = d[a + 2] || s, b = Math.min(o, c), i = l[h
						+ 1], j;
				if (i.nodeType !== 1 && (j = t.substring(e, b))) {
					k && (j = j.replace(m, "\r"));
					i.nodeValue = j;
					var u = i.ownerDocument, v = u.createElement("SPAN");
					v.className = d[a + 1];
					var x = i.parentNode;
					x.replaceChild(v, i);
					v.appendChild(i);
					e < o
							&& (l[h + 1] = i = u.createTextNode(t.substring(b,
									o)), x.insertBefore(i, v.nextSibling))
				}
				e = b;
				e >= o && (h += 2);
				e >= c && (a += 2)
			}
		} catch (w) {
			"console" in window && console.log(w && w.stack ? w.stack : w)
		}
	}
	var v = ["break,continue,do,else,for,if,return,while"], w = [
			[
					v,
					"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"],
			"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"], F = [
			w,
			"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"], G = [
			w,
			"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], H = [
			G,
			"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"], w = [
			w,
			"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"], I = [
			v,
			"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], J = [
			v,
			"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"], v = [
			v, "case,done,elif,esac,eval,fi,function,in,local,set,then,until"], K = /^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/, N = /\S/, O = u(
			{
				keywords : [
						F,
						H,
						w,
						"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"
								+ I, J, v],
				hashComments : !0,
				cStyleComments : !0,
				multiLineStrings : !0,
				regexLiterals : !0
			}), A = {};
	k(O, ["default-code"]);
	k(
			x(
					[],
					[
							["pln", /^[^<?]+/],
							["dec", /^<!\w[^>]*(?:>|$)/],
							["com", /^<\!--[\S\s]*?(?:--\>|$)/],
							["lang-", /^<\?([\S\s]+?)(?:\?>|$)/],
							["lang-", /^<%([\S\s]+?)(?:%>|$)/],
							["pun", /^(?:<[%?]|[%?]>)/],
							["lang-", /^<xmp\b[^>]*>([\S\s]+?)<\/xmp\b[^>]*>/i],
							["lang-js",
									/^<script\b[^>]*>([\S\s]*?)(<\/script\b[^>]*>)/i],
							["lang-css",
									/^<style\b[^>]*>([\S\s]*?)(<\/style\b[^>]*>)/i],
							["lang-in.tag", /^(<\/?[a-z][^<>]*>)/i]]), [
					"default-markup", "htm", "html", "mxml", "xhtml", "xml",
					"xsl"]);
	k(		x(		[["pln", /^\s+/, q, " \t\r\n"],
							["atv", /^(?:"[^"]*"?|'[^']*'?)/, q, "\"'"]], [
							["tag", /^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],
							["atn", /^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],
							["lang-uq.val",
									/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],
							["pun", /^[/<->]+/],
							["lang-js", /^on\w+\s*=\s*"([^"]+)"/i],
							["lang-js", /^on\w+\s*=\s*'([^']+)'/i],
							["lang-js", /^on\w+\s*=\s*([^\s"'>]+)/i],
							["lang-css", /^style\s*=\s*"([^"]+)"/i],
							["lang-css", /^style\s*=\s*'([^']+)'/i],
							["lang-css", /^style\s*=\s*([^\s"'>]+)/i]]),
			["in.tag"]);
	k(x([], [["atv", /^[\S\s]+/]]), ["uq.val"]);
	k(		u({
						keywords : F,
						hashComments : !0,
						cStyleComments : !0,
						types : K
					}), ["c", "cc", "cpp", "cxx", "cyc", "m"]);
	k(		u({
						keywords : "null,true,false"
					}), ["json"]);
	k(		u({
						keywords : H,
						hashComments : !0,
						cStyleComments : !0,
						verbatimStrings : !0,
						types : K
					}), ["cs"]);
	k(		u({
						keywords : G,
						cStyleComments : !0
					}), ["java"]);
	k(		u({
						keywords : v,
						hashComments : !0,
						multiLineStrings : !0
					}), ["bsh", "csh", "sh"]);
	k(		u({
						keywords : I,
						hashComments : !0,
						multiLineStrings : !0,
						tripleQuotedStrings : !0
					}), ["cv", "py"]);
	k(u({
		keywords : "caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",
		hashComments : !0,
		multiLineStrings : !0,
		regexLiterals : !0
	}), ["perl", "pl", "pm"]);
	k(		u({
						keywords : J,
						hashComments : !0,
						multiLineStrings : !0,
						regexLiterals : !0
					}), ["rb"]);
	k(		u({
						keywords : w,
						cStyleComments : !0,
						regexLiterals : !0
					}), ["js"]);
	k(u({
		keywords : "all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes",
		hashComments : 3,
		cStyleComments : !0,
		multilineStrings : !0,
		tripleQuotedStrings : !0,
		regexLiterals : !0
	}), ["coffee"]);
	k(x([], [["str", /^[\S\s]+/]]), ["regex"]);
	window.prettyPrintOne = function(a, m, e) {
		var h = document.createElement("PRE");
		h.innerHTML = a;
		e && D(h, e);
		E({
					g : m,
					i : e,
					h : h
				});
		return h.innerHTML
	};
	window.prettyPrint = function(a) {
		function m() {
			for (var e = window.PR_SHOULD_USE_CONTINUATION
					? l.now() + 250
					: Infinity; p < h.length && l.now() < e; p++) {
				var n = h[p], k = n.className;
				if (k.indexOf("prettyprint") >= 0) {
					var k = k.match(g), f, b;
					if (b = !k) {
						b = n;
						for (var o = void 0, c = b.firstChild; c; c = c.nextSibling)
							var i = c.nodeType, o = i === 1
									? o ? b : c
									: i === 3 ? N.test(c.nodeValue) ? b : o : o;
						b = (f = o === b ? void 0 : o) && "CODE" === f.tagName
					}
					b && (k = f.className.match(g));
					k && (k = k[1]);
					b = !1;
					for (o = n.parentNode; o; o = o.parentNode)
						if ((o.tagName === "pre" || o.tagName === "code" || o.tagName === "xmp")
								&& o.className
								&& o.className.indexOf("prettyprint") >= 0) {
							b = !0;
							break
						}
					b
							|| ((b = (b = n.className
									.match(/\blinenums\b(?::(\d+))?/)) ? b[1]
									&& b[1].length ? +b[1] : !0 : !1)
									&& D(n, b), d = {
								g : k,
								h : n,
								i : b
							}, E(d))
				}
			}
			p < h.length ? setTimeout(m, 250) : a && a()
		}
		for (var e = [document.getElementsByTagName("pre"),
				document.getElementsByTagName("code"),
				document.getElementsByTagName("xmp")], h = [], k = 0; k < e.length; ++k)
			for (var t = 0, s = e[k].length; t < s; ++t)
				h.push(e[k][t]);
		var e = q, l = Date;
		l.now || (l = {
			now : function() {
				return +new Date
			}
		});
		var p = 0, d, g = /\blang(?:uage)?-([\w.]+)(?!\S)/;
		m()
	};
	window.PR = {
		createSimpleLexer : x,
		registerLangHandler : k,
		sourceDecorator : u,
		PR_ATTRIB_NAME : "atn",
		PR_ATTRIB_VALUE : "atv",
		PR_COMMENT : "com",
		PR_DECLARATION : "dec",
		PR_KEYWORD : "kwd",
		PR_LITERAL : "lit",
		PR_NOCODE : "nocode",
		PR_PLAIN : "pln",
		PR_PUNCTUATION : "pun",
		PR_SOURCE : "src",
		PR_STRING : "str",
		PR_TAG : "tag",
		PR_TYPE : "typ"
	}
})();
